R & Vador

Donnée Textuelle
Décoder les plans des rebelles

Contexte

  • Les données se présentent sous multiples formes
  • Données structurées: tableur
  • Données semi structurées: json, html
  • Données non structurées: video, photo, pdf

Contexte

  • R et Python rendent l’analyse des données semi et non structurées plus facile

Pourquoi analyser du texte?

  • Plus de 80% de la totalité des données
  • Elles permettent de comprendre le “Pourquoi”
  • Offre de nouvelles possibilités (chatGPT)

Cas Pratique

Analysons les tweets de Donald Trump de 2009 à 2016

Donald Trump, un tweetos très actif

Dataset

Les données ont le format suivant:

datatable(head(sample,3),  
          rownames = FALSE, options = list(pageLength = 3, dom = 't') )

Après transformation via
des Expressions Régulère (RegEx):

tidy_tweet <- tweet %>% 
  distinct() %>% 
  mutate(date_time =  ymd_hms(paste(Date, Time)),
         user=str_extract_all(message_punctuationless, '@(\\w){1,15}'),
         is_rt = ifelse( str_detect(message, '^ RT @|^RT @|"@'),1,0),
         rt_user = ifelse(is_rt, str_extract(message, '@(\\w){1,15}'), NA),
         text = ifelse(is_rt & ((str_detect(message,'^"') & str_count(message,'"')==1|str_detect(message,'^RT'))),'', 
                       ifelse(is_rt , str_remove_all(message, '".*"'), message)),
         hashtag = str_extract_all(message, '#(\\w){1,30}')) 

Données nettoyées

Analysons la connotation des tweets

  • Méthode 1 : Mot par mot (méthode naïve)
  • Méthode 2 : Par message (Machine Learning)

Méthode 1

Mot par mot

Dictionnaire

afinn <- get_sentiments("afinn")

Jointure avec les tweets

score_bywords <- tweet %>% 
  unnest_tokens(word, text) %>% 
  left_join(afinn, by='word')

Méthode 2

Natural Language Processing
(Machine Learning)

Modélisation



Modélisation



Modélisation



Modélisation



Modélisation



Résultat

Le plus mentionné n’est pas le plus proche

FoxNews vs CNN

Les mots les plus utilisés lorsqu’il mentionne les comptes @FoxNews et @CNN

Tweets plus positifs quand
@FoxNews est mentionné

Récapitulatif

Dans cet exemple

  • Les données ont été nettoyées avec {stringr}
  • Les données ont été visualisées avec {highcharter}

Limite

  • L’exemple était volontairement simple
  • Le modèle de machine learning n’était pas avancé
  • Pour aller plus loin, le Deep Learning est conseillé

Merci pour votre attention

Questions?